home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 2 / CD ACTUAL VOL 2.iso / programa / tunplus / tun / tuntcp.mst < prev    next >
Encoding:
Text File  |  1995-09-21  |  36.7 KB  |  1,240 lines

  1. '**************************************************************************
  2. '*                   Tun TCP Setup installation script
  3. '**************************************************************************
  4.  
  5. ''$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10.  
  11. GLOBAL ASKCUSTOM$
  12. GLOBAL FINDINSTTYPE$
  13. GLOBAL ENCRYPTDLG$ 
  14. GLOBAL COPYFILES$ 
  15. GLOBAL ENCRYPTFILES$ 
  16. GLOBAL CREATEINIFILES$ 
  17. GLOBAL ADDPATH$
  18. GLOBAL ASKTCPCONF$
  19. GLOBAL RUNTCPCONF$
  20. GLOBAL CREATEGROUPS$ 
  21. GLOBAL szSN$
  22. GLOBAL szAK$
  23. GLOBAL szLS$
  24. GLOBAL DEST$        ''Default destination directory.
  25.  
  26. '$INCLUDE 'setup.inc'
  27.  
  28. ''Dialog ID's
  29. CONST ASKQUIT      = 200
  30. CONST DESTPATH     = 300
  31. CONST EXITFAILURE  = 400
  32. CONST EXITQUIT     = 600
  33. CONST EXITSUCCESS  = 700
  34. CONST OPTIONS      = 800
  35. CONST APPHELP      = 900
  36. CONST DIREXIST     = 1000
  37. CONST CUSTINST     = 6200
  38. CONST TOOBIG       = 6300
  39. CONST BADPATH      = 6400
  40. CONST CDGETNAMEORG = 7500
  41. CONST CDBADORG     = 7800
  42. CONST MODELESS     = 5000
  43. CONST MODELESS2    = 5001
  44. CONST ASKUPDATE    = 5003
  45. CONST ASKYESNOBACK = 5004
  46. CONST ASKYESNO     = 5005
  47. CONST CDBADFILE    = 7200
  48. CONST GETSERIALNUM = 1100
  49. CONST WINPATH      = 1300
  50.  
  51. ''Bitmap ID
  52. CONST LOGO         = 1
  53.  
  54. ''File Types
  55. CONST APPFILES     = 1
  56. CONST OPTFILES1    = 2
  57. CONST OPTFILES2    = 3
  58. CONST OPTFILES3    = 4
  59. CONST OPTFILES4    = 5
  60. CONST OPTFILES5    = 6
  61. CONST CRYPTFILES   = 100
  62. CONST CTL3DFILES   = 101
  63. CONST CONVERTFILES = 102
  64.  
  65. ''Standard dialog button IDs 
  66. CONST IDOK         = 1
  67. CONST IDCANCEL     = 2
  68. CONST IDABORT      = 3
  69. CONST IDRETRY      = 4
  70. CONST IDIGNORE     = 5
  71. CONST IDYES        = 6
  72. CONST IDNO         = 7
  73.  
  74. GLOBAL DESTKER$   ''Default destination sub-directory.
  75. GLOBAL DESTTCP$   ''Default destination sub-directory.
  76. GLOBAL DESTCOM$   ''Default destination sub-directory.
  77. GLOBAL SETUPPROG$   ''Full Path of DLL to be load.
  78. GLOBAL FILEPATH$    ''Temp File Path.
  79. GLOBAL WINDRIVE$    ''Windows drive letter.
  80. GLOBAL OPT1OPT$     ''Option selection from OptFiles1 option dialog.
  81. GLOBAL OPT2OPT$     ''Option selection from OptFiles1 option dialog.
  82. GLOBAL OPT3OPT$     ''Option selection from OptFiles1 option dialog.
  83. GLOBAL OPT4OPT$     ''Option selection from OptFiles1 option dialog.
  84. GLOBAL OPT5OPT$     ''Option selection from OptFiles1 option dialog.
  85.  
  86. ''CustInst list symbol names
  87. GLOBAL APPNEEDS$    ''Option list costs per drive
  88. GLOBAL OPT1NEEDS$
  89. GLOBAL OPT2NEEDS$
  90. GLOBAL OPT3NEEDS$
  91. GLOBAL OPT4NEEDS$
  92. GLOBAL OPT5NEEDS$
  93. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  94. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  95.  
  96. ''Dialog list symbol names
  97. GLOBAL CHECKSTATES$
  98. GLOBAL STATUSTEXT$
  99. GLOBAL DRIVETEXT$
  100. ''
  101.  
  102. GLOBAL DiskFileVersion$ 
  103. GLOBAL MasterFileVersion$ 
  104. GLOBAL TCPCONF$ 
  105. GLOBAL INSTALLEDKER%
  106. GLOBAL INSTALLKER%
  107. GLOBAL INSTALLEDTCP%
  108. GLOBAL INSTALLTCP%
  109. GLOBAL INSTALLCRYPT%
  110. GLOBAL INSTALLCTL3D%
  111. GLOBAL INSTALLCONVERT%
  112. GLOBAL KERNELTYPE$ 
  113. GLOBAL FINDTUNPATH%
  114.  
  115.  
  116.  
  117. DECLARE SUB RegisterCtl3d LIB "tuntcp.dll"
  118. DECLARE SUB UnregisterCtl3d LIB "tuntcp.dll"
  119. DECLARE SUB ShowMaximize LIB "tuncomm.dll" (frame%)
  120. DECLARE FUNCTION CustomSetup LIB "tuncomm.dll" (frame%,szDir$)
  121. DECLARE FUNCTION AddTunDir LIB "tuncomm.dll" (szDir$) AS INTEGER
  122. DECLARE FUNCTION FindExistingPath LIB "tuncomm.dll" (szDir$) AS INTEGER
  123. DECLARE FUNCTION RemoveSysIniKey LIB "tuncomm.dll" (szFile$, szSection$, szEntry$, szKey$) AS INTEGER
  124. DECLARE FUNCTION MyAddSysIniKey LIB "tuncomm.dll" (szFile$, szSection$, szEntry$, szKey$) AS INTEGER
  125. DECLARE FUNCTION CreateSysFile LIB "tuncomm.dll" (szFile$) AS INTEGER
  126. DECLARE FUNCTION SaveFile LIB "tuncomm.dll" (szFile$) AS INTEGER
  127. DECLARE FUNCTION OutputStr LIB "tuncomm.dll" (szMsg$) AS INTEGER
  128. DECLARE FUNCTION OutputInt LIB "tuncomm.dll" (nVal%) AS INTEGER
  129. DECLARE FUNCTION EncryptFile LIB "tuncomm.dll" (szPath$, szSer$, szKey$, szLi$) AS INTEGER
  130. DECLARE FUNCTION AddLangMenu LIB "tuncomm.dll" (szPath$) AS INTEGER
  131. DECLARE FUNCTION CreatIniConvert LIB "tuncomm.dll" (szPath$) AS INTEGER
  132. DECLARE FUNCTION CreatIniTcp LIB "tuncomm.dll" (KerTyp$,Path$,InstMail%,nLG%) AS INTEGER
  133. DECLARE FUNCTION CreatIniKer LIB "tuncomm.dll" (Path$,InstTcp%) AS INTEGER
  134. DECLARE FUNCTION MyExitWindows LIB "tuncomm.dll" (nType%) AS INTEGER
  135.      
  136. DECLARE FUNCTION IsInstalled (szSection$,szKey$,szFile$,szPath$) AS INTEGER
  137. DECLARE SUB AddOptFilesToCopyList (ftype%)
  138. DECLARE SUB RecalcOptFiles (ftype%)
  139. DECLARE SUB RecalcPath
  140. DECLARE SUB SetDriveStatus
  141. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  142. DECLARE FUNCTION MakeString (i%) AS STRING
  143. DECLARE FUNCTION IsNewer (szVersion1$, szVersion2$) AS INTEGER
  144.  
  145.  
  146.  
  147. INIT:
  148.     CUIDLL$ = "tuntcp.dll"            ''custom user interface dll
  149.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  150.  
  151. ''
  152. ''      Setup control screen:
  153. ''        Maximize Window, Add bitmap to CUIDLL, Set Window Title 
  154. ''
  155.     WndFrame% = HwndFrame()
  156.     ShowMaximize WndFrame%
  157.     SetBitmap CUIDLL$, LOGO
  158.     SetTitle "Tun TCP - Setup"
  159.  
  160. ''
  161. ''      Read INF file
  162. ''
  163.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  164.     IF szInf$ = "" THEN
  165.     szInf$ = GetSymbolValue("STF_CWDDIR") + "tuntcp.INF"
  166.     END IF
  167.     ReadInfFile szInf$
  168.  
  169. ''
  170. ''  Init Variables
  171. ''
  172.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  173.     IF DEST$ = "" THEN
  174.       DEST$ = WINDRIVE$ + ":\TUN"
  175.     ENDIF
  176.  
  177.     ''CustInst list symbols
  178.     CHECKSTATES$ = "CheckItemsState"
  179.     STATUSTEXT$  = "StatusItemsText"
  180.     DRIVETEXT$   = "DriveStatusText"
  181.     FOR i% = 1 TO 7 STEP 1
  182.     AddListItem CHECKSTATES$, "OFF"
  183.     NEXT i%
  184.     FOR i% = 1 TO 7 STEP 1
  185.     AddListItem STATUSTEXT$, ""
  186.     NEXT i%
  187.     FOR i% = 1 TO 7 STEP 1
  188.     AddListItem DRIVETEXT$, ""
  189.     NEXT i%
  190.     ReplaceListItem DRIVETEXT$, 7, DEST$
  191.  
  192.     ''Disk cost list symbols
  193.     APPNEEDS$   = "AppNeeds"
  194.     OPT1NEEDS$  = "Opt1Needs"
  195.     OPT2NEEDS$  = "Opt2Needs"
  196.     OPT3NEEDS$  = "Opt3Needs"
  197.     OPT4NEEDS$  = "Opt4Needs"
  198.     OPT5NEEDS$  = "Opt5Needs"
  199.     EXTRACOSTS$ = "ExtraCosts"
  200.     BIGLIST$    = "BigList"
  201.     FOR i% = 1 TO 7 STEP 1
  202.     AddListItem BIGLIST$, ""
  203.     NEXT i%
  204.     FOR i% = 1 TO 26 STEP 1
  205.     AddListItem EXTRACOSTS$, "0"
  206.     AddListItem OPT1NEEDS$, "0"
  207.     AddListItem OPT2NEEDS$, "0"
  208.     AddListItem OPT3NEEDS$, "0"
  209.     AddListItem OPT4NEEDS$, "0"
  210.     AddListItem OPT5NEEDS$, "0"
  211.     NEXT i%
  212.  
  213.     ''File Option Variables
  214.     OPT1OPT$ = "1"
  215.     OPT2OPT$ = "1"
  216.     OPT3OPT$ = "1"
  217.     OPT4OPT$ = "1"
  218.     OPT5OPT$ = "1"
  219.  
  220.     INSTALLKER%= 1
  221.     INSTALLEDKER% = 0 
  222.     KERNELTYPE$ = "BTN2" 
  223.     ReplaceListItem CHECKSTATES$, OPTFILES1 , "ON"
  224.     
  225.     RecalcPath
  226.     SetDriveStatus
  227.     
  228.  
  229. '$IFDEF DEBUG
  230.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  231. '$ENDIF ''DEBUG
  232.  
  233.     RegisterCtl3d
  234.  
  235. IF ASKCUSTOM$ <> "NO" THEN
  236. CUSTINST:
  237.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  238.  
  239.     IF sz$ = "CONTINUE" THEN
  240.     ''Install only if it will fit.
  241.     FOR i% = 1 TO 7 STEP 1
  242.         IF GetListItem(BIGLIST$, i%) <> "" THEN
  243.         GOSUB TOOBIG
  244.         GOTO CUSTINST
  245.         END IF
  246.     NEXT i%
  247.     UIPop 1
  248.     GOTO INSTALL
  249.     ELSEIF sz$ = "PATH" THEN
  250.     GOTO GETPATH
  251.     ELSEIF sz$ = "CHK5" THEN
  252.     RecalcOptFiles OPTFILES4
  253.     SetDriveStatus
  254.     GOTO CUSTINST
  255.     ELSEIF sz$ = "BTN2" OR sz$ = "BTN3" OR sz$ = "BTN4" THEN
  256.     KERNELTYPE$ = sz$ 
  257.     RecalcOptFiles OPTFILES1
  258.     IF INSTALLEDKER% <> 1 THEN
  259.       RecalcOptFiles OPTFILES5
  260.     ENDIF
  261.     SetDriveStatus
  262.     GOTO CUSTINST
  263.     ELSEIF sz$ = "REACTIVATE" THEN
  264.     RecalcPath
  265.     SetDriveStatus
  266.     GOTO CUSTINST
  267.     ELSE
  268.     GOSUB ASKQUIT
  269.     GOTO CUSTINST
  270.     END IF
  271. ENDIF
  272.  
  273. INSTALL:
  274.  
  275. ''
  276. ''      Init path sub-directory
  277. ''
  278.  
  279.     DESTKER$= MakePath( DEST$, "KERNELW")
  280.     DESTTCP$= MakePath( DEST$, "TCPW")
  281.     DESTCOM$= MakePath( DEST$, "COMMON")
  282.  
  283. ''
  284. ''      Find type of installation
  285. ''
  286. IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  287.   INSTALLKER% = 1
  288.   IF FINDINSTTYPE$ <> "NO" THEN
  289.  
  290.     FILEPATH$= MakePath( DESTKER$, "TUNTCPIP.DLL")
  291.     IF DoesFileExist ( FILEPATH$, femExits) = 1 THEN
  292.       MasterFileVersion$ = GetSectionKeyVersion("KernelFiles","TUNTCPIP.DLL")
  293.       DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
  294.       INSTALLEDKER% = IsNewer( DiskFileVersion$, MasterFileVersion$) 
  295.     ENDIF
  296.  
  297.     IF INSTALLEDKER% = 1 THEN
  298.       SetSymbolValue "TitleYesNoBack", "Update"
  299.       SetSymbolValue "MessageYesNoBack", "The same version of Tun KERNEL has been found. Do you want to overwrite it ?" 
  300. INSK1:
  301.       sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
  302.       UIPop 1
  303.       IF sz$ = "YES" THEN
  304.     INSTALLKER% = 1 
  305.       ELSEIF sz$ = "BACK" THEN
  306.     GOTO CUSTINST 
  307.       ELSEIF sz$ = "REACTIVATE" THEN
  308.         GOTO INSK1
  309.       ELSE
  310.     INSTALLKER% = 0
  311.       ENDIF
  312.     ELSEIF INSTALLEDKER% = 2 THEN
  313.       SetSymbolValue "TitleYesNoBack", "Update"
  314.       SetSymbolValue "MessageYesNoBack", "A previous version of Tun KERNEL has been found. Do you want to overwrite it ?" 
  315. INSK2:
  316.       sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
  317.       UIPop 1
  318.       IF sz$ = "YES" THEN
  319.     INSTALLKER% = 2 
  320.       ELSEIF sz$ = "BACK" THEN
  321.     GOTO CUSTINST 
  322.       ELSEIF sz$ = "REACTIVATE" THEN
  323.         GOTO INSK2
  324.       ELSE
  325.     INSTALLKER% = 0
  326.       ENDIF
  327.     ELSE
  328.       INSTALLKER% = 1
  329.     ENDIF
  330.   ENDIF
  331. ELSE
  332.   INSTALLKER% = 0
  333. ENDIF
  334.  
  335. INSTALLEDTCP% = 0
  336. INSTALLTCP% = 1
  337. INSTALLCRYPT% = 1
  338. INSTALLCTL3D% = 1
  339. INSTALLCONVERT% = 1
  340. IF FINDINSTTYPE$ <> "NO" THEN
  341.  
  342. FILEPATH$= MakePath( DESTTCP$, "WFTP.EXE")
  343.   IF DoesFileExist ( FILEPATH$, femExits) = 1 THEN
  344.     MasterFileVersion$ = GetSectionKeyVersion("TcpFiles","WFTP.EXE")
  345.     DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
  346.     INSTALLEDTCP% = IsNewer( DiskFileVersion$, MasterFileVersion$) 
  347.   ENDIF
  348.  
  349.   IF INSTALLEDTCP% = 1 THEN
  350.     SetSymbolValue "TitleYesNoBack", "Update"
  351.     SetSymbolValue "MessageYesNoBack", "The same version of Tun TCP has been found. Do you want to overwrite it ?" 
  352. INST1:
  353.     sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
  354.     UIPop 1
  355.     IF sz$ = "YES" THEN
  356.       INSTALLTCP% = 1 
  357.     ELSEIF sz$ = "BACK" THEN
  358.       GOTO CUSTINST 
  359.     ELSEIF sz$ = "REACTIVATE" THEN
  360.       GOTO INST1
  361.     ELSE
  362.       INSTALLTCP% = 0
  363.     ENDIF
  364.   ELSEIF INSTALLEDTCP% = 2 THEN
  365.     SetSymbolValue "TitleYesNoBack", "Update"
  366.     SetSymbolValue "MessageYesNoBack", "A previous version of Tun TCP has been found. Do you want to overwrite it ?" 
  367. INST2:
  368.     sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
  369.     UIPop 1
  370.     IF sz$ = "YES" THEN
  371.       INSTALLTCP% = 2 
  372.     ELSEIF sz$ = "BACK" THEN
  373.       GOTO CUSTINST 
  374.     ELSEIF sz$ = "REACTIVATE" THEN
  375.       GOTO INST2
  376.     ELSE
  377.       INSTALLTCP% = 0
  378.     ENDIF
  379.   ELSE
  380.     INSTALLTCP% = 1
  381.   ENDIF
  382.  
  383. '' Tuncrypt ?
  384.   fInst% = IsInstalled ("CryptFiles","TUNCRYPT.DLL","TUNCRYPT.DLL",DESTCOM$)
  385.   IF fInst% <> 2 AND fInst% <> 4 THEN 
  386.      INSTALLCRYPT%=0
  387.   ENDIF
  388.  
  389. '' Convert ?
  390.   fInst% = IsInstalled ("ConvertFiles","CONVERT.DLL","CONVERT.DLL",DESTCOM$)
  391.   IF fInst% <> 2 AND fInst% <> 4 THEN 
  392.      INSTALLCONVERT%=0
  393.   ENDIF
  394.  
  395. '' CTL3D ?
  396.   fInst% = IsInstalled ("Ctl3dFiles","CTL3D.TUN","CTL3D.DLL",GetWindowsSysDir)
  397.   IF fInst% = 0 OR fInst% = 1 THEN 
  398.      INSTALLCTL3D%=0
  399.   ELSEIF fInst% = 2 THEN
  400.      INSTALLCTL3D%=2
  401.   ENDIF
  402.  
  403. ENDIF
  404. IF INSTALLTCP% = 0 AND INSTALLKER%= 0 THEN
  405.   GOTO CUSTINST
  406. ENDIF
  407.  
  408. ''
  409. ''      Serialization Dialogue Box
  410. ''
  411. IF ENCRYPTDLG$ <> "NO" THEN
  412. SERIAL:
  413.     sz$ = UIStartDlg(CUIDLL$, GETSERIALNUM, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  414.     IF sz$ = "CANCEL" THEN
  415.       sz$ = UIStartDlg(CUIDLL$, CDBADORG, "FInfoDlgProc", 0, "" )
  416.       UIPop 1
  417.       GOTO SERIAL
  418.     ELSEIF sz$ = "EXIT" THEN
  419.       GOSUB ASKQUIT
  420.       GOTO SERIAL
  421.     ELSEIF sz$ <> "CONTINUE" THEN
  422.       GOTO SERIAL
  423.     ENDIF
  424.        
  425.     szSN$ = GetSymbolValue( "NameOut" )
  426.     szAK$ = GetSymbolValue( "OrgOut" )
  427.     szLS$ = GetSymBolValue( "LicenseStringOut" )
  428.     szHEAD$ = MID$( szSN$, 4, 2 )
  429.     IF szHEAD$ <> "02" AND szHEAD$ <> "00" THEN
  430. BADF1:
  431.       sz$ = UIStartDlg(CUIDLL$, CDBADFILE, "FInfoDlgProc", 0, "" )
  432.       UIPop 1
  433.       IF sz$ = "EXIT" THEN
  434.           GOTO ASKQUIT
  435.           GOTO SERIAL
  436.           ELSEIF sz$ = "CONTINUE" THEN
  437.           GOTO SERIAL
  438.           ELSE
  439.               GOTO BADF1
  440.       ENDIF
  441.     ENDIF
  442.     UIPop 1
  443. ENDIF
  444.  
  445.  
  446. ''
  447. ''      Copy procedure
  448. ''
  449. IF COPYFILES$ <> "NO" THEN
  450.     ClearCopyList
  451.     AddOptFilesToCopyList APPFILES
  452.     AddOptFilesToCopyList OPTFILES1
  453.     IF INSTALLKER% = 1 THEN
  454.        AddOptFilesToCopyList OPTFILES5
  455.     ENDIF
  456.     IF INSTALLCRYPT% = 1 THEN
  457.       AddOptFilesToCopyList CRYPTFILES
  458.     ENDIF
  459.     IF INSTALLCONVERT% = 1 THEN
  460.       AddOptFilesToCopyList CONVERTFILES
  461.     ENDIF
  462.     IF INSTALLCTL3D% <> 0 THEN
  463.       AddOptFilesToCopyList CTL3DFILES
  464.     ENDIF
  465.     AddOptFilesToCopyList OPTFILES4
  466.     CreateDir DEST$, cmoNone
  467.     SetRestartDir MakePath( DEST$, "TMP")
  468.     CopyFilesInCopyList
  469.  
  470. ENDIF
  471.  
  472. ''
  473. ''      Encrypt procedure
  474. ''
  475. IF ENCRYPTFILES$ <> "NO" THEN
  476.  
  477. ''    SetSymbolValue "NameOut", szSN$
  478. ''    SetSymbolValue "OrgOut", szAK$
  479. ''    SetSymBolValue "LicenseStringOut", szLS$
  480. ''IF INSTALLKER% <> 0 THEN
  481. ''    SetSymbolValue "PathFiles", DESTKER$
  482. ''    SetSymbolValue "ProgramType", "KER" 
  483. ''    sz$ = UIStartDlg(CUIDLL$, MODELESS, "FModelessDlgProc", 0, "" )
  484. ''    UIPop 1
  485. ''ENDIF
  486. ''    SetSymbolValue "PathFiles", DESTTCP$
  487. ''    SetSymbolValue "ProgramType", "TCP" 
  488. ''    sz$ = UIStartDlg(CUIDLL$, MODELESS, "FModelessDlgProc", 0, "" )
  489. ''    UIPop 1
  490.  
  491.     fEncryt%=EncryptFile(DESTCOM$, szSN$, szAK$, szLS$)
  492.  
  493. ENDIF
  494.  
  495. ''
  496. ''       Installation of CTL3D.DLL if required
  497. ''
  498. CTL3D:
  499.    szNF$ = MakePath(DESTCOM$ , "CTL3D.TUN")
  500.    szOF$ = GetWindowsSysDir() + "CTL3D.DLL"
  501.    IF INSTALLCTL3D% = 2 THEN 
  502. CTL3D1:
  503.      sz$ = UIStartDlg(CUIDLL$, ASKUPDATE, "FAskUpdateDlgProc", 0, "")
  504.      IF sz$ = "YES" THEN
  505.        CopyFile szOF$, GetWindowsSysDir() + "CTL3D.OLD", cmoOverwrite, 0
  506.        CopyFile szNF$, szOF$, cmoOverwrite, 0 
  507.      ELSEIF sz$ = "REACTIVATE" THEN
  508.         GOTO CTL3D1
  509.      ENDIF
  510.      UIPop 1
  511.    ELSEIF INSTALLCTL3D% = 1 THEN
  512.        CopyFile szNF$, szOF$, cmoOverwrite, 0 
  513.    ENDIF
  514.  
  515. ''CHECKCONFIG:
  516. ''    szNF$ = MakePath(DEST$ , "BIN\CTL3D.TUN")
  517. ''    szOF$ = GetWindowsSysDir() + "CTL3D.DLL"
  518. ''    SetSymbolValue "NewFile", szNF$
  519. ''    SetSymbolValue "OldFile", szOF$
  520. ''    sz$ = UIStartDlg(CUIDLL$, MODELESS2, "FCheckConfigDlgProc", 0, "" )
  521. ''    IF sz$ = "UPDATE" THEN
  522. ''       GOSUB ASKUPDATE  
  523. ''    END IF      
  524. ''    UIPop 1
  525.  
  526.  
  527. ''
  528. ''      Modification/Creation of Tun TCP / Tun KERNEL entry in TUN.INI
  529. ''
  530. IF CREATEINIFILES$ <> "NO" THEN
  531.  
  532.     CursorSave% = ShowWaitCursor()
  533.  
  534.     szLG$ = MID$( szSN$, 3, 1 )
  535.     nLG% = (ASC(MID$(szSN$,6,1)) - ASC("0")) * 10 + (ASC(MID$(szSN$,7,1)) - ASC("0"))
  536.     IF DoesIniKeyExist( MakePath( GetWindowsDir(), "TUN.INI"), "Language", "Language") = 0 THEN
  537.     IF nLG% = 1 THEN
  538.         szLGN$= "01"
  539.     ELSEIF nLG% > 3 THEN
  540.         szLGN$ = MakeString(nLG% - 2 ) 
  541.     ELSE
  542.         szLGN$ ="00"
  543.     END IF
  544.         CreateIniKeyValue MakePath( GetWindowsDir(), "TUN.INI"), "Language", "Language", szLGN$ ,cmoOverwrite
  545.     END IF
  546.  
  547. IF INSTALLCRYPT% = 1 THEN
  548.   i%=AddLangMenu(DESTCOM$)
  549. ENDIF
  550.  
  551. IF INSTALLCONVERT% = 1 THEN
  552.   i%=CreatIniConvert(DESTCOM$)
  553. ENDIF
  554.  
  555. ''
  556. '' Save file system.ini in system.XXX before modification
  557. '' Delete old and Add new TUNREDIR.386 or TUNNFS.386 
  558. ''
  559.  
  560.     i%= SaveFile( MakePath( GetWindowsDir(), "SYSTEM.INI"))
  561.  
  562.     IF KERNELTYPE$ = "BTN2" THEN
  563.        i%= RemoveSysIniKey( MakePath( GetWindowsDir(), "SYSTEM.INI"), "386Enh", "device", "TUNNFS.386")
  564.        i%= RemoveSysIniKey( MakePath( GetWindowsDir(), "SYSTEM.INI"), "386Enh", "device", "TUNREDIR.386")
  565.        i%= MyAddSysIniKey( MakePath( GetWindowsDir(), "SYSTEM.INI"), "386Enh", "device", MakePath( DESTTCP$, "TUNREDIR.386"))
  566.  
  567.     ELSEIF KERNELTYPE$ = "BTN3" THEN
  568.        i%= RemoveSysIniKey( MakePath( GetWindowsDir(), "SYSTEM.INI"), "386Enh", "device", "TUNREDIR.386")
  569.        i%= RemoveSysIniKey( MakePath( GetWindowsDir(), "SYSTEM.INI"), "386Enh", "device", "TUNNFS.386")
  570.        i%= MyAddSysIniKey(MakePath( GetWindowsDir(), "SYSTEM.INI"), "386Enh", "device", MakePath( DESTTCP$, "TUNNFS.386"))
  571.  
  572.    ENDIF
  573.  
  574. ''
  575. '' Create System files
  576. ''
  577.        i%= CreateSysFile(MakePath( DESTTCP$, "WLPD.INI"))
  578.        i%= CreateSysFile(MakePath( DESTTCP$, "WNFSD.INI"))
  579.        i%= CreateSysFile(MakePath( DESTTCP$, "WFTPD.INI"))
  580.  
  581. ''
  582. ''      Modification/Creation of needed entries for NDD 
  583. ''
  584.  
  585. IF DoesIniKeyExist(MakePath(GetWindowsDir,"SYSTEM.INI"),"boot","network.drv") = 1 THEN
  586.    NDD$ = GetIniKeyString(MakePath(GetWindowsDir,"SYSTEM.INI"), "boot", "network.drv")
  587.    NDD$ = LCASE$(NDD$)
  588.    IF DoesIniKeyExist(MakePath(GetWindowsDir,"SYSTEM.INI"),"boot","secondnet.drv") = 1 THEN
  589.       SNDD$ = GetIniKeyString(MakePath(GetWindowsDir,"SYSTEM.INI"), "boot", "secondnet.drv")
  590.       SNDD$ = LCASE$(SNDD$)
  591.    END IF
  592. END IF
  593.  
  594. IF NDD$ <> "" THEN
  595.    IF INSTR(1, NDD$, "wfwnet.drv") THEN
  596.       IF SNDD$ <> "" THEN
  597.      IF INSTR(1 ,SNDD$ , "tuntcp.drv") OR INSTR(1, SNDD$, "tunnet.drv") THEN
  598.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", "secondnet.drv", MakePath(DESTTCP$,"TUNNET.DRV"), cmoOverwrite
  599.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot.description", "secondnet.drv", "Tun TCP ESKER (version 8.00)", cmoOverwrite
  600.      ELSE
  601.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", ";secondnet.drv", SNDD$, cmoOverwrite
  602.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", "secondnet.drv", MakePath(DESTTCP$,"TUNNET.DRV"), cmoOverwrite
  603.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot.description", "secondnet.drv", "Tun TCP ESKER (version 8.00)", cmoOverwrite
  604.         CreateIniKeyValue MakePath( DESTTCP$, "TUNNET.INI"), "Othernet", "Path", SNDD$, cmoOverwrite
  605.         CreateIniKeyValue MakePath( DESTTCP$, "TUNNET.INI"), "Othernet", "Enable", "Yes", cmoOverwrite
  606.         IF INSTR(1, SNDD$, "netware.drv") THEN
  607.           OTHERNETNAME$= "Novell"
  608.         ELSEIF INSTR(1,SNDD$, "lanman") THEN
  609.           OTHERNETNAME$= "LAN Manager"
  610.         ELSE
  611.           OTHERNETNAME$= "Other"
  612.         ENDIF
  613.         CreateIniKeyValue MakePath( DESTTCP$, "TUNNET.INI"), "Othernet", "Name", OTHERNETNAME$, cmoOverwrite
  614.      END IF
  615.       ELSE
  616.      CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", "secondnet.drv", MakePath(DESTTCP$,"TUNNET.DRV"), cmoOverwrite
  617.      CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot.description", "secondnet.drv", "Tun TCP ESKER (version 8.00)", cmoOverwrite
  618.       ENDIF
  619.    ELSE
  620.       IF INSTR(1 ,NDD$ , "tuntcp.drv") OR INSTR(1, NDD$, "tunnet.drv") THEN
  621.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", ";network.drv", NDD$ ,cmoOverwrite
  622.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", "network.drv", MakePath(DESTTCP$,"TUNNET.DRV"), cmoOverwrite
  623.       ELSE
  624.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", ";network.drv", NDD$ ,cmoOverwrite
  625.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", "network.drv", MakePath(DESTTCP$,"TUNNET.DRV"), cmoOverwrite
  626.         CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot.description", "network.drv", "Tun TCP ESKER (version 8.00)", cmoOverwrite
  627.         CreateIniKeyValue MakePath( DESTTCP$, "TUNNET.INI"), "Othernet", "Path", NDD$, cmoOverwrite
  628.         CreateIniKeyValue MakePath( DESTTCP$, "TUNNET.INI"), "Othernet", "Enable", "Yes", cmoOverwrite
  629.         IF INSTR(1, NDD$, "netware.drv") THEN
  630.            OTHERNETNAME$= "Novell"
  631.         ELSEIF INSTR(1,NDD$, "lanman") THEN
  632.            OTHERNETNAME$= "LAN Manager"
  633.         ELSE
  634.        OTHERNETNAME$= "Other"
  635.         ENDIF
  636.         CreateIniKeyValue MakePath( DESTTCP$, "TUNNET.INI"), "Othernet", "Name", OTHERNETNAME$, cmoOverwrite
  637.       ENDIF
  638.    ENDIF
  639. ELSE
  640.    CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot", "network.drv", MakePath(DESTTCP$,"TUNNET.DRV"), cmoOverwrite
  641.    CreateIniKeyValue MakePath( GetWindowsDir(), "SYSTEM.INI"), "boot.description", "network.drv", "Tun TCP ESKER (version 8.00)", cmoOverwrite
  642. END IF
  643.       
  644.  
  645. IF INSTALLKER% <> 0 THEN
  646.    i%= CreatIniKer(DESTKER$,INSTALLTCP%)
  647. ENDIF
  648.  
  649. i%= CreatIniTcp(KERNELTYPE$,DESTTCP$,0,nLG%)
  650.  
  651.     RestoreCursor CursorSave%
  652. ENDIF
  653.  
  654. ''
  655. ''      Add Path of Tun KERNEL in AUTOEXEC.BAT
  656. ''
  657. FINDTUNPATH%=1
  658. IF ADDPATH$ <> "NO" THEN
  659.  
  660. IF INSTALLKER% <> 0 THEN
  661.   FINDTUNPATH% = FindExistingPath(DESTKER$)
  662.   IF FINDTUNPATH% = 0 THEN
  663.     i% = AddTunDir(DESTKER$)
  664.   ENDIF
  665. ENDIF
  666. ENDIF
  667.  
  668. ''
  669. ''     Ask to configure TCP/IP 
  670. ''
  671. TCPCONF$ = "NO"
  672.  
  673. IF ASKTCPCONF$ <> "NO" THEN
  674.  
  675. IF INSTALLKER% <> 0 THEN
  676.     SetSymbolValue "MessageYesNo", "Do you want to configure TCP/IP now ? This can be done later running the Administrator"
  677.     SetSymbolValue "TitleYesNo", "TCP/IP Configuration"
  678. TCPCONF1:
  679.     TCPCONF$ = UIStartDlg(CUIDLL$, ASKYESNO, "FAskYesNoDlgProc", 0, "" )
  680.     IF TCPCONF$ = "REACTIVATE" THEN
  681.         GOTO TCPCONF1
  682.     ENDIF
  683.     UIPop 1
  684. ENDIF
  685.  
  686. ENDIF
  687.  
  688. ''
  689. ''      Run TCP/IP Custom Dialogs
  690. ''
  691. IF RUNTCPCONF$ <> "NO" THEN
  692.  
  693. IF INSTALLKER% <> 0 THEN
  694.   IF TCPCONF$= "YES" THEN
  695.     SETUPPROG$= MakePath( DESTKER$, "WTCPDLG.DLL")
  696.     i% = CustomSetup( WndFrame%, SETUPPROG$)
  697.   ENDIF
  698. ENDIF
  699. ENDIF
  700.  
  701. ''
  702. ''      TUN KERNEL ProgramGroup and ProgramItem creation  
  703. ''
  704.  
  705. IF CREATEGROUPS$ <> "NO" THEN
  706.  
  707.     CreateProgmanGroup "Tun TCP", "", cmoNone
  708.     ShowProgmanGroup  "Tun TCP", 1, cmoNone
  709.  
  710. IF INSTALLKER% <> 0 THEN
  711.     CreateProgmanItem "Tun TCP", "Admin", MakePath( DESTTCP$, "WTUNTCPW.EXE" ), "", cmoOverwrite
  712.     CreateProgmanItem "Tun TCP", "WTCPIP", MakePath( DESTKER$, "WTCPIP.EXE" ), "", cmoOverwrite
  713.     CreateProgmanItem "Tun TCP", "Ping", MakePath( DESTKER$, "WPING.EXE" ), "", cmoOverwrite
  714. ELSE
  715. IF KERNELTYPE$ = "BTN4" THEN
  716.     CreateProgmanItem "Tun TCP", "Admin", MakePath( DESTTCP$, "WTUNTCPW.EXE -TCPIP -NFS" ), "", cmoOverwrite
  717. ELSE
  718.     CreateProgmanItem "Tun TCP", "Admin", MakePath( DESTTCP$, "WTUNTCPW.EXE -TCPIP" ), "", cmoOverwrite
  719. ENDIF
  720.  
  721. ENDIF
  722.  
  723.     CreateProgmanItem "Tun TCP", "VT320 Emulator", MakePath( DESTTCP$, "WVT320.EXE" ), "", cmoOverwrite
  724.     CreateProgmanItem "Tun TCP", "File Transfer", MakePath( DESTTCP$, "WFTP.EXE" ), "", cmoOverwrite
  725.     CreateProgmanItem "Tun TCP", "Email", MakePath( DESTTCP$, "WMAIL2.EXE" ), "", cmoOverwrite
  726.     CreateProgmanItem "Tun TCP", "Remote Command", MakePath( DESTTCP$, "WRSH.EXE" ), "", cmoOverwrite
  727.     CreateProgmanItem "Tun TCP", "Tape Archive", MakePath( DESTTCP$, "WTAR.EXE" ), "", cmoOverwrite
  728.     CreateProgmanItem "Tun TCP", "Print Server", MakePath( DESTTCP$, "WLPD.EXE" ), "", cmoOverwrite
  729.     CreateProgmanItem "Tun TCP", "FTP Server", MakePath( DESTTCP$, "WFTPD.EXE" ), "", cmoOverwrite
  730.     CreateProgmanItem "Tun TCP", "NFS Server", MakePath( DESTTCP$, "WNFSD.EXE" ), "", cmoOverwrite
  731.  
  732. ENDIF
  733.  
  734. ''
  735. ''      Run TCP/IP Custom Dialogs
  736. ''
  737. IF RUNTCPCONF$ <> "NO" THEN
  738.  
  739. IF INSTALLKER% <> 0 THEN
  740.   IF TCPCONF$= "YES" THEN
  741.     SETUPPROG$= MakePath( DESTKER$, "WTCPDLG.DLL")
  742.     i% = CustomSetup( WndFrame%, SETUPPROG$)
  743.   ENDIF
  744. ENDIF
  745. ENDIF
  746.  
  747. QUIT:
  748.     ON ERROR GOTO ERRQUIT
  749.  
  750.     IF ERR = 0 THEN
  751.     dlg% = EXITSUCCESS
  752.     IF COPYFILES$ <> "NO" THEN
  753.       IF RestartListEmpty() = 0 THEN
  754.         dumb% = ExitExecRestart()
  755.       END IF
  756.     ENDIF
  757.         IF FINDTUNPATH% = 0 OR (INSTALLTCP% <> 0 AND (KERNELTYPE$ = "BTN2" OR KERNELTYPE$ = "BTN3")) THEN
  758.           IF FINDTUNPATH% = 0 THEN
  759. REBOOT1:
  760.             SetSymbolValue "TitleYesNo", "Restart System"
  761.             SetSymbolValue "MessageYesNo", "Setup has modified AUTOEXEC.BAT file. Do you want to restart the computer ?" 
  762.             sz$ = UIStartDlg(CUIDLL$, ASKYESNO, "FAskYesNoDlgProc", 0, "")
  763.             UIPop 1
  764.             IF sz$ <> "NO" THEN
  765.            i%=MyExitWindows(1)
  766.                GOTO REBOOT1
  767.             ENDIF
  768.           ELSE
  769. REBOOT2:
  770.             SetSymbolValue "TitleYesNo", "Restart Windows"
  771.             SetSymbolValue "MessageYesNo", "Setup has modified Windows system files. Do you want to restart Windows ?" 
  772.             sz$ = UIStartDlg(CUIDLL$, ASKYESNO, "FAskYesNoDlgProc", 0, "")
  773.             UIPop 1
  774.             IF sz$ <> "NO" THEN
  775.            i%=MyExitWindows(0)
  776.                GOTO REBOOT2
  777.             ENDIF
  778.           ENDIF
  779.  
  780.         ENDIF
  781.     ELSEIF ERR = STFQUIT THEN
  782.     dlg% = EXITQUIT
  783.     ELSE
  784.     dlg% = EXITFAILURE
  785.     END IF
  786. QUITL1:
  787.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  788.     IF sz$ = "REACTIVATE" THEN
  789.     GOTO QUITL1
  790.     END IF
  791.     UnregisterCtl3d
  792.     UIPop 1
  793.  
  794.     END
  795.  
  796. ERRQUIT:
  797.     i% = DoMsgBox("Les sources de Setup ne sont plus valide, appelez le support technique!", "Message Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  798.     END
  799.  
  800.  
  801.  
  802. GETPATH:
  803.     SetSymbolValue "EditTextIn", DEST$
  804.     SetSymbolValue "EditFocus", "END"
  805. GETPATHL1:
  806.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  807.  
  808.     IF sz$ = "CONTINUE" THEN
  809.     olddest$ = DEST$
  810.     DEST$ = GetSymbolValue("EditTextOut")
  811.  
  812.     ''Validate new path.
  813.     IF IsDirWritable(DEST$) = 0 THEN
  814.         GOSUB BADPATH
  815.         GOTO GETPATHL1
  816.     END IF
  817.     UIPop 1
  818.  
  819.     ''Truncate display if too long.
  820.     IF LEN(DEST$) > 23 THEN
  821.         ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  822.     ELSE
  823.         ReplaceListItem DRIVETEXT$, 7, DEST$
  824.     END IF
  825.  
  826.     ''Recalc if path changed.
  827.     IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  828.         RecalcPath
  829.         SetDriveStatus
  830.     END IF
  831.  
  832.     olddest$ = ""
  833.     GOTO CUSTINST
  834.     ELSEIF sz$ = "REACTIVATE" THEN
  835.     RecalcPath
  836.     SetDriveStatus
  837.     GOTO GETPATHL1
  838.     ELSEIF sz$ = "EXIT" THEN
  839.     GOSUB ASKQUIT
  840.     GOTO GETPATHL1
  841.     ELSE
  842.     UIPop 1
  843.     GOTO CUSTINST
  844.     END IF
  845.  
  846.  
  847. GETPATHWIN:
  848.     SetSymbolValue "EditTextIn", WINSOCKPATH$
  849.     SetSymbolValue "EditFocus", "END"
  850. GETPATHL1WIN:
  851.     sz$ = UIStartDlg(CUIDLL$, WINPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  852.  
  853.     IF sz$ = "CONTINUE" THEN
  854.     oldwinsockpath$ = WINSOCKPATH$
  855.     WINSOCKPATH$ = GetSymbolValue("EditTextOut")
  856.  
  857.     ''Validate new path.
  858.     IF IsDirWritable(WINSOCKPATH$) = 0 THEN
  859.         GOSUB BADPATH
  860.         GOTO GETPATHL1WIN
  861.     END IF
  862.     UIPop 1
  863.  
  864.     ''Truncate display if too long.
  865.     IF LEN(WINSOCKPATH$) > 23 THEN
  866.         ReplaceListItem DRIVETEXT$, 4, MID$(WINSOCKPATH$, 1, 23)+"..."
  867.     ELSE
  868.         ReplaceListItem DRIVETEXT$, 4, WINSOCKPATH$
  869.     END IF
  870.  
  871.     oldwinsockpath$ = ""
  872.     GOTO CUSTINST
  873.     ELSEIF sz$ = "REACTIVATE" THEN
  874.     GOTO GETPATHL1WIN
  875.     ELSEIF sz$ = "EXIT" THEN
  876.     GOSUB ASKQUIT
  877.     GOTO GETPATHL1WIN
  878.     ELSE
  879.     UIPop 1
  880.     GOTO CUSTINST
  881.     END IF
  882.  
  883. ''OPTFILES1:
  884. ''    SetSymbolValue "RadioDefault", OPT1OPT$
  885. ''OPT1L1:
  886. ''    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  887. ''    newopt$ = GetSymbolValue("ButtonChecked")
  888. ''
  889. ''    IF sz$ = "CONTINUE" THEN
  890. ''        UIPop 1
  891. ''        IF newopt$ <> OPT1OPT$ THEN
  892. ''            OPT1OPT$ = newopt$
  893. ''            RecalcOptFiles OPTFILES1
  894. ''            SetDriveStatus
  895. ''        END IF
  896. ''        newopt$ = ""
  897. ''        GOTO CUSTINST
  898. ''    ELSEIF sz$ = "REACTIVATE" THEN
  899. ''        RecalcPath
  900. ''        SetDriveStatus
  901. ''        GOTO OPT1L1
  902. ''    ELSEIF sz$ = "EXIT" THEN
  903. ''        GOSUB ASKQUIT
  904. ''        GOTO OPT1L1
  905. ''    ELSE
  906. ''        UIPop 1
  907. ''        newopt$ = ""
  908. ''        GOTO CUSTINST
  909. ''    END IF
  910.  
  911.  
  912.  
  913. ''OPTFILES2:
  914. ''    SetSymbolValue "RadioDefault", OPT2OPT$
  915. ''OPT2L1:
  916. ''    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  917. ''    newopt$ = GetSymbolValue("ButtonChecked")
  918. ''
  919. ''    IF sz$ = "CONTINUE" THEN
  920. ''        UIPop 1
  921. ''        IF newopt$ <> OPT2OPT$ THEN
  922. ''            OPT2OPT$ = newopt$
  923. ''            RecalcOptFiles OPTFILES2
  924. ''            SetDriveStatus
  925. ''        END IF
  926. ''        newopt$ = ""
  927. ''        GOTO CUSTINST
  928. ''    ELSEIF sz$ = "REACTIVATE" THEN
  929. ''        RecalcPath
  930. ''        SetDriveStatus
  931. ''        GOTO OPT2L1
  932. ''    ELSEIF sz$ = "EXIT" THEN
  933. ''        GOSUB ASKQUIT
  934. ''        GOTO OPT2L1
  935. ''    ELSE
  936. ''        UIPop 1
  937. ''        newopt$ = ""
  938. ''        GOTO CUSTINST
  939. ''    END IF
  940.  
  941. ASKUPDATE:
  942.      sz$ = UIStartDlg(CUIDLL$, ASKUPDATE, "FAskUpdateDlgProc", 0, "")
  943.     IF sz$ = "YES" THEN
  944.        CopyFile szOF$, GetWindowsSysDir() + "CTL3D.OLD", cmoOverwrite, 0
  945.        CopyFile szNF$, szOF$, cmoOverwrite, 0 
  946.     ENDIF
  947.         
  948.      UIPop 1
  949.      RETURN
  950.  
  951. TOOBIG:
  952.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  953.     IF sz$ = "REACTIVATE" THEN
  954.     RecalcPath
  955.     SetDriveStatus
  956.     GOTO TOOBIG
  957.     END IF
  958.     UIPop 1
  959.     RETURN
  960.  
  961.  
  962.  
  963. BADPATH:
  964.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  965.     IF sz$ = "REACTIVATE" THEN
  966.     RecalcPath
  967.     SetDriveStatus
  968.     GOTO BADPATH
  969.     END IF
  970.     UIPop 1
  971.     RETURN
  972.  
  973.  
  974. ASKQUIT:
  975.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  976.  
  977.     IF sz$ = "EXIT" THEN
  978.     UIPopAll
  979.     ERROR STFQUIT
  980.     ELSEIF sz$ = "REACTIVATE" THEN
  981.     GOTO ASKQUIT
  982.     ELSE
  983.     UIPop 1
  984.     END IF
  985.     RETURN
  986.  
  987.  
  988.  
  989. '**
  990. '** Purpose:
  991. '**     Adds the specified option files to the copy list.
  992. '** Arguments:
  993. '**     ftype%  - type of files to add, one of the following:
  994. '**             APPFILES, OPTFILES1, OPTFILES2
  995. '** Returns:
  996. '**     none.
  997. '*************************************************************************
  998. SUB AddOptFilesToCopyList (ftype%) STATIC
  999.  
  1000.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  1001.     IF ftype% = APPFILES THEN
  1002.     AddSectionFilesToCopyList "TcpFiles", SrcDir$, DEST$
  1003.     ELSEIF ftype% = OPTFILES1 AND KERNELTYPE$ = "BTN2" THEN
  1004.     IF INSTALLKER% <> 0 THEN 
  1005.     AddSectionFilesToCopyList "KernelFiles", SrcDir$, DEST$
  1006.     ENDIF
  1007.     AddSectionFilesToCopyList "NfsDllFiles", SrcDir$, DEST$
  1008.     ELSEIF ftype% = OPTFILES1 AND KERNELTYPE$ = "BTN3" THEN
  1009.     AddSectionFilesToCopyList "NfsVxdFiles", SrcDir$, DEST$
  1010.     ELSEIF ftype% = OPTFILES5  THEN
  1011.     AddSectionFilesToCopyList "KernelnFiles", SrcDir$, DEST$
  1012.     ELSEIF ftype% = OPTFILES4 AND GetListItem(CHECKSTATES$, OPTFILES4) = "ON" THEN
  1013.     AddSectionFilesToCopyList "Pop3Files", SrcDir$, DEST$
  1014.     ELSEIF ftype% = CRYPTFILES  THEN
  1015.     AddSectionFilesToCopyList "CryptFiles", SrcDir$, DEST$
  1016.     ELSEIF ftype% = CTL3DFILES  THEN
  1017.     AddSectionFilesToCopyList "Ctl3dFiles", SrcDir$, DEST$
  1018.     ELSEIF ftype% = CONVERTFILES  THEN
  1019.     AddSectionFilesToCopyList "ConvertFiles", SrcDir$, DEST$
  1020.     ENDIF
  1021.     SrcDir$ = ""
  1022.  
  1023. END SUB
  1024.  
  1025.  
  1026. '**
  1027. '** Purpose:
  1028. '**     Recalculates disk space for the given option files and sets
  1029. '**     the status info symbol "StatusItemsText".
  1030. '** Arguments:
  1031. '**     ftype% - type of files to add, one of the following:
  1032. '**             APPFILES, OPTFILES1, OPTFILES2
  1033. '** Returns:
  1034. '**     none.
  1035. '*************************************************************************
  1036. SUB RecalcOptFiles (ftype%) STATIC
  1037.     CursorSave% = ShowWaitCursor()
  1038.     ClearCopyList
  1039.     AddOptFilesToCopyList ftype%
  1040.  
  1041.     fExtra% = 0
  1042.     IF ftype% = APPFILES THEN
  1043.     ListSym$ = APPNEEDS$
  1044. ''        IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  1045.         ''Add extra cost to Windows drive for ini/progman, etc.
  1046.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1047.         ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  1048.         fExtra% = 1
  1049. ''        END IF
  1050.     ELSEIF ftype% = OPTFILES1 THEN
  1051.     ListSym$ = OPT1NEEDS$
  1052.     ELSEIF ftype% = OPTFILES2 THEN
  1053.     ListSym$ = OPT2NEEDS$
  1054.     ELSEIF ftype% = OPTFILES3 THEN
  1055.     ListSym$ = OPT3NEEDS$
  1056.     ELSEIF ftype% = OPTFILES4 THEN
  1057.     ListSym$ = OPT4NEEDS$
  1058.     ELSEIF ftype% = OPTFILES5 THEN
  1059.     ListSym$ = OPT5NEEDS$
  1060.     ELSEIF ftype% = OPTFILES6 THEN
  1061.     ListSym$ = OPT6NEEDS$
  1062.     END IF
  1063.  
  1064.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  1065.  
  1066.     cost& = 0
  1067.     FOR i% = 1 TO 26 STEP 1
  1068.     cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  1069.     NEXT i%
  1070.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  1071.  
  1072.     IF StillNeed& > 0 THEN
  1073.     ReplaceListItem BIGLIST$, ftype%, "YES"
  1074.     ELSE
  1075.     ReplaceListItem BIGLIST$, ftype%, ""
  1076.     END IF
  1077.  
  1078.     IF fExtra% THEN
  1079.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  1080.     END IF
  1081.     RestoreCursor CursorSave%
  1082.     ListSym$ = ""
  1083. END SUB
  1084.  
  1085.  
  1086. '**
  1087. '** Purpose:
  1088. '**     Recalculates disk space and sets option status info according
  1089. '**     to the current destination path.
  1090. '** Arguments:
  1091. '**     none.
  1092. '** Returns:
  1093. '**     none.
  1094. '*************************************************************************
  1095. SUB RecalcPath STATIC
  1096.  
  1097.     CursorSave% = ShowWaitCursor()
  1098.  
  1099.     DESTKER$= MakePath( DEST$, "KERNELW")
  1100.     FILEPATH$= MakePath( DESTKER$, "TUNTCPIP.DLL")
  1101.     IF DoesFileExist ( FILEPATH$, femExits) = 1 THEN
  1102.       MasterFileVersion$ = GetSectionKeyVersion("KernelFiles","TUNTCPIP.DLL")
  1103.       DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
  1104.       INSTALLEDKER% = IsNewer( DiskFileVersion$, MasterFileVersion$) 
  1105.     ENDIF
  1106.     RecalcOptFiles APPFILES
  1107. ''    IF INSTALLEDKER% <> 1 THEN
  1108. ''      ReplaceListItem CHECKSTATES$, OPTFILES1, "ON"
  1109. ''    ELSE
  1110. ''      ReplaceListItem CHECKSTATES$, OPTFILES1, "OFF"
  1111. ''    ENDIF
  1112.     RecalcOptFiles OPTFILES1
  1113.     IF INSTALLEDKER% <> 1 THEN
  1114.       RecalcOptFiles OPTFILES5
  1115.     ENDIF
  1116.     RecalcOptFiles OPTFILES4
  1117.  
  1118.     RestoreCursor CursorSave%
  1119. END SUB
  1120.  
  1121.  
  1122. '**
  1123. '** Purpose:
  1124. '**     Sets drive status info according to latest disk space calcs.
  1125. '** Arguments:
  1126. '**     none.
  1127. '** Returns:
  1128. '**     none.
  1129. '*************************************************************************
  1130. SUB SetDriveStatus STATIC
  1131.  
  1132.     drive$ = MID$(DEST$, 1, 1)
  1133.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  1134.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) +VAL(GetListItem(OPT1NEEDS$, ndrive%)) +VAL(GetListItem(OPT2NEEDS$, ndrive%)) +VAL(GetListItem(OPT3NEEDS$, ndrive%)) +VAL(GetListItem(OPT4NEEDS$, ndrive%)) +VAL(GetListItem(OPT5NEEDS$, ndrive%)) 
  1135.     free& = GetFreeSpaceForDrive(drive$)
  1136.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  1137.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  1138.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  1139.  
  1140.     IF drive$ = WINDRIVE$ THEN
  1141. ''      ReplaceListItem DRIVETEXT$, 4, ""
  1142.     ReplaceListItem DRIVETEXT$, 5, ""
  1143.     ReplaceListItem DRIVETEXT$, 6, ""
  1144.     ELSE
  1145.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  1146.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) +VAL(GetListItem(OPT1NEEDS$, ndrive%)) +VAL(GetListItem(OPT2NEEDS$, ndrive%)) +VAL(GetListItem(OPT3NEEDS$, ndrive%))
  1147.     IF cost& = 0 THEN
  1148. ''          ReplaceListItem DRIVETEXT$, 4, ""
  1149.         ReplaceListItem DRIVETEXT$, 5, ""
  1150.         ReplaceListItem DRIVETEXT$, 6, ""
  1151.     ELSE
  1152.         free& = GetFreeSpaceForDrive(WINDRIVE$)
  1153. ''          ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  1154.         ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  1155.         ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  1156.     END IF
  1157.     END IF
  1158. END SUB
  1159.  
  1160.  
  1161. '**
  1162. '** Purpose:
  1163. '**     Appends a file name to the end of a directory path,
  1164. '**     inserting a backslash character as needed.
  1165. '** Arguments:
  1166. '**     szDir$  - full directory path (with optional ending "\")
  1167. '**     szFile$ - filename to append to directory
  1168. '** Returns:
  1169. '**     Resulting fully qualified path name.
  1170. '*************************************************************************
  1171. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  1172.     IF szDir$ = "" THEN
  1173.     MakePath = szFile$
  1174.     ELSEIF szFile$ = "" THEN
  1175.     MakePath = szDir$
  1176.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  1177.     MakePath = szDir$ + szFile$
  1178.     ELSE
  1179.     MakePath = szDir$ + "\" + szFile$
  1180.     END IF
  1181. END FUNCTION
  1182.  
  1183. FUNCTION MakeString (i%) STATIC AS STRING
  1184.  
  1185.     Number$ = "0123456789"
  1186.     MakeString = "0" + MID$(Number$,i%+1 ,1)
  1187.     
  1188. END FUNCTION
  1189.  
  1190. '**
  1191. '** Purpose:
  1192. '**     Newest version 
  1193. '** Arguments:
  1194. '**     szVersion1$ - N.N.N.N version string 1 
  1195. '**     szVersion2$ - N.N.N.N version string 2 
  1196. '** Returns:
  1197. '**     If szVersion1$ > szVersion2$  return 0 
  1198. '**     If szVersion1$ = szVersion2$  return 1 
  1199. '**     If szVersion1$ < szVersion2$  return 2 
  1200. '*************************************************************************
  1201. FUNCTION IsNewer (szVersion1$, szVersion2$) STATIC AS INTEGER
  1202.     IF GetVersionNthField(szVersion1$,1) < GetVersionNthField(szVersion2$,1) THEN
  1203.     IsNewer = 2
  1204.     ELSEIF GetVersionNthField(szVersion1$,1) > GetVersionNthField(szVersion2$,1) THEN
  1205.     IsNewer = 0
  1206.     ELSE 
  1207.     IF GetVersionNthField(szVersion1$,2) < GetVersionNthField(szVersion2$,2) THEN
  1208.       IsNewer = 2
  1209.     ELSEIF GetVersionNthField(szVersion1$,2) > GetVersionNthField(szVersion2$,2) THEN
  1210.     IsNewer = 0
  1211.     ELSE
  1212.       IF GetVersionNthField(szVersion1$,3) < GetVersionNthField(szVersion2$,3) THEN
  1213.         IsNewer = 2
  1214.       ELSEIF GetVersionNthField(szVersion1$,3) > GetVersionNthField(szVersion2$,3) THEN
  1215.         IsNewer = 0
  1216.       ELSE
  1217.         IF GetVersionNthField(szVersion1$,4) < GetVersionNthField(szVersion2$,4) THEN
  1218.           IsNewer = 2
  1219.         ELSEIF GetVersionNthField(szVersion1$,4) > GetVersionNthField(szVersion2$,4) THEN
  1220.           IsNewer = 0
  1221.         ELSE
  1222.           IsNewer = 1
  1223.         END IF
  1224.       END IF
  1225.     END IF
  1226.     END IF
  1227. END FUNCTION
  1228.  
  1229. FUNCTION IsInstalled(szSection$,szKey$,szFile$,szPath$) STATIC AS INTEGER 
  1230.  
  1231.     IsInstalled = 4
  1232.     FILEPATH$= MakePath( szPath$, szFile$)
  1233.     IF DoesFileExist ( FILEPATH$, femExists) = 1 THEN
  1234.       MasterFileVersion$ = GetSectionKeyVersion(szSection$,szKey$)
  1235.       DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
  1236.       IsInstalled = IsNewer( DiskFileVersion$, MasterFileVersion$) 
  1237.     ENDIF
  1238.  
  1239. END FUNCTION
  1240.